package br.edu.fanor.esfinge.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;

import br.edu.fanor.esfinge.enumer.StatusResumo;

@Entity
@Table(name="resumos")
public class Resumos implements Serializable{


        private static final long serialVersionUID = 1L;
        
        @Id
        @Column(name="resumo_id")
        @SequenceGenerator(name="seq_resumo", sequenceName="seq_resumo", allocationSize=1)
        @GeneratedValue(generator="seq_resumo", strategy=GenerationType.SEQUENCE)
        private Long id;        
        private String titulo;
        private String resumo;
        private String visibilidade;
        
        @Column(name="data_resumo")
        @Temporal(javax.persistence.TemporalType.DATE)
        private Date dataResumo;
        
        
        
        @ManyToOne
        private Usuarios autor;
        
        @OneToOne
        private Disciplinas disciplinas;
       
        @ManyToOne
        private Livros livros;
        
        @OneToMany(mappedBy = "resumoId")
        private List<VerResumo> verResumo;
        
        @Column(name="status_resumo", nullable=false)
        private Integer statusResumo;

		public Long getId() {
			return id;
		}

		public void setId(Long id) {
			this.id = id;
		}

		public String getTitulo() {
			return titulo;
		}

		public void setTitulo(String titulo) {
			this.titulo = titulo;
		}

		public String getResumo() {
			return resumo;
		}

		public void setResumo(String resumo) {
			this.resumo = resumo;
		}

		public String getVisibilidade() {
			return visibilidade;
		}

		public void setVisibilidade(String visibilidade) {
			this.visibilidade = visibilidade;
		}

		public Date getDataResumo() {
			return dataResumo;
		}

		public void setDataResumo(Date dataResumo) {
			this.dataResumo = dataResumo;
		}

		public Usuarios getAutor() {
			return autor;
		}

		public void setAutor(Usuarios autor) {
			this.autor = autor;
		}

		public Disciplinas getDisciplinas() {
			return disciplinas;
		}

		public void setDisciplinas(Disciplinas disciplinas) {
			this.disciplinas = disciplinas;
		}

		public Livros getLivros() {
			return livros;
		}

		public void setLivros(Livros livros) {
			this.livros = livros;
		}

		public List<VerResumo> getVerResumos() {
			return verResumo;
		}

		public void setVerResumos(List<VerResumo> verResumo) {
			this.verResumo = verResumo;
		}
		
		public StatusResumo getStatusResumo() {
            return StatusResumo.getStatusResumo(this.statusResumo);
        }

        public void setStatusResumo(StatusResumo statusResumo) {
            this.statusResumo = statusResumo != null ? statusResumo
                            .getCodigo() : null;
        }

		@Override
		public int hashCode() {
			final int prime = 31;
			int result = 1;
			result = prime * result + ((id == null) ? 0 : id.hashCode());
			return result;
		}

		@Override
		public boolean equals(Object obj) {
			if (this == obj)
				return true;
			if (obj == null)
				return false;
			if (getClass() != obj.getClass())
				return false;
			Resumos other = (Resumos) obj;
			if (id == null) {
				if (other.id != null)
					return false;
			} else if (!id.equals(other.id))
				return false;
			return true;
		}

		@Override
		public String toString() {
			return "ResumoDAO [id=" + id + ", titulo=" + titulo + ", resumo="
					+ resumo + ", visibilidade=" + visibilidade
					+ ", dataResumo=" + dataResumo + ", autor=" + autor
					+ ", disciplinas=" + disciplinas + ", livros=" + livros
					+ ", verResumo=" + verResumo + ", statusResumo="
					+ statusResumo + "]";
		}


}